const fs = require('fs');
const http = require('http')
const https = require('https')
const delDir = require('../utils/delDir')
const config = require('./config')
let saveUtil = {
    beforeSave() { // 在保存图片之前的预处理
        return new Promise(async (resolve, reject) => {
            await delDir(config.parentPath); // 删除已存在的父文件夹
            // console.log('该文件目录已删除!');

            await fs.mkdir(config.parentPath, async function (err) { // 新建父文件夹
                // console.log('-----------------------')
                // console.log('创建' + config.parentPath + '文件夹成功');
                // console.log('-----------------------')
                await resolve('创建' + config.parentPath + '文件夹成功');
            })

        })
    },
    saveFile(moduleImgUrlObj) { // 保存资源
        for (var key in moduleImgUrlObj) { // 遍历
            // console.log('------开始遍历资源列表-----')
            if (moduleImgUrlObj.hasOwnProperty(key)) {
                let imgUrlArr = moduleImgUrlObj[key];
                if(imgUrlArr.length){ // 图片数组中有数据的时候才会存储
                    let saveImgPath = imgUrlArr[0].saveImgPath
                    fs.mkdir(`${config.parentPath}/${saveImgPath}`, err => { // 新建子文件夹
                        // console.log('-----------------------')
                        // console.log('创建' + saveImgPath + '子文件夹成功');
                        // console.log('-----------------------')
                        imgUrlArr.forEach((urlObj, index) => {
                            setTimeout(() => {
                                this.saveImg(urlObj.imgUrl, `${config.parentPath}/${saveImgPath}/【${index}】.jpg`)
                            }, 1000*index)
                        })
                        // // console.log("恭喜老铁O(∩_∩)O,图片保存完成");
                    })
                }
              
            }
        }

    },
    /**
     * 
     * @param {*} url 图片的资源路径
     * @param {*} path 将图片下载到本地磁盘的路径
     */
    saveImg(url, path) {

            let httpUtil = '',
                imgUrl
            
            if(url.indexOf('https') === -1 && url.indexOf('https') === -1){
                imgUrl = config.imgAttrPrefixExt + url
            }else{
                imgUrl = url
            }
            // console.log('**********图片下载地址***********')
            // console.log(imgUrl)
          
            if (imgUrl.indexOf('https') > -1) {
                httpUtil = https
                // console.log('*****使用https*****')
            } else if (imgUrl.indexOf('http') > -1) {
                httpUtil = http
                // console.log('*****使用http*****')
            }
            httpUtil.get(imgUrl, (req, res) => {
                var imgData = '';
                req.setEncoding('binary');
                req.on('data', function (chunk) {
                    imgData += chunk;
                })
                req.on('end', function () {
                    fs.writeFile(path, imgData, 'binary', function (err) {
                        // console.log('保存图片成功' + path)
                    })
                })
            });


    }
}

module.exports = saveUtil